# step 4: build the distribution image

# package lists are needed for installer and live-install images
METADIR := files/Metadata

# preparation targets of features.in/build-distro/lib/build-distro.mk
WHATEVER += metadata

# handle these too
DOT_BASE += $(BASE_PACKAGES_REGEXP) $(THE_PACKAGES_REGEXP)

# args: type, name
define dump
if [ -n "$($(2)_$(1))" ]; then \
	echo -e "\n## $(2)_$(1)"; \
	case "$(1)" in \
	PACKAGES) echo "$($(2)_$(1))";; \
	LISTS) echo -e "\n# $($(2)_$(1))"; cat $($(2)_$(1));; \
	esac; \
fi;
endef

# BASE_PACKAGES, BASE_LISTS and whatever else goes into base install;
# thus construct requisite .base packagelist for alterator-pkg
metadata-.base:
	@cd $(call list,/); \
	{ \
		echo "## generated by features.in/metadata/lib/50-metadata.mk";\
		$(foreach p,SYSTEM COMMON THE BASE,$(call dump,PACKAGES,$(p))) \
		$(foreach l,COMMON THE BASE,$(call dump,LISTS,$(l))) \
		if [ -n "$(DOT_BASE)" ]; then \
			echo -e "\n## DOT_BASE\n$(DOT_BASE)"; \
		fi; \
		} | sed -re 's/^[[:space:]]+//' | sed -re '/^[^[:space:]#]/ s/[[:space:]]+/\n/g' > .base

# see also alterator-pkg (backend3/pkg-install);
# we only tar up what's up to it (note that e.g.
# LIVE_LISTS are needed in the generated profile
# but not for alterator-pkg)
metadata: metadata-.base
	@mkdir -p $(METADIR); \
	tar -C $(PKGDIR) -cvf - \
		$(call rlist,.base $(call groups2lists)) \
		$(call rgroup,$(THE_GROUPS) $(MAIN_GROUPS)) \
		$(call rprofile,$(THE_PROFILES)) \
	> $(METADIR)/pkg-groups.tar
